package hu.bme.iit.szlab4.continuity;

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {
	// Makkos
	static public int tabszam = 0;
	// Tukor
	static public int hivasszam = 0; // szukseges a 3 mely metodushivasok
										// megfelelo szamozasahoz, illetve az
										// alt-oktol es opt-oktol fuggo hivasok
										// megfelelo szamozasahoz

	// Makkos
	// Ezt hasznaljatok tabok beszurasara.
	// Fuggvenybe belepeskor noveljetek a tabszam-ot,
	// aztan ez a fv visszaadja a megfelelo tabszamot Stringkent.
	// Pelda az Ajto interakt fuggvenyeben.
	public static String getTabok() {
		String tmp = new String();
		for (int i = 0; i < tabszam; i++) {
			tmp += "\t";
		}
		return tmp;
	}

	public static void main(String[] args) {
		// a vege valtozonak kezdeskor false-nak kell lennie, hogy a program
		// bemenjen a while ciklusba.
		boolean vege = false;
		String sor = "inic";
		int menu = 10;

		Tesztesetek teszt = new Tesztesetek();

		// Ez a ciklus addig fut, amig a vege valtozo hamis. Akkor fog igaz-ra
		// billenni, amikor a user az 'x'-et vitte be.
		while (!vege) {
			// Fomenu
			// Itt vannak felsorolva a tesztesetek.
			// Ezek kozul ugy tudunk valasztani, hogy beirjuk kivant
			// tesztesethez tartozo szamot.
			System.out.println("Tesztesetek:");
			// Betoltes
			System.out.println("0. Betoltes");
			// Jatekoshoz kapcsolodo tesztesetek. Ezek a reszletes nezet eseteit
			// vizsgaljak.
			System.out.println("1. Jatekos lep");
			System.out.println("2. Jatekos palyaelemmel utkozik");
			System.out.println("3. Jatekos es a fal interakcioja");
			System.out.println("4. Jatekos es ajto interakcioja");
			System.out.println("5. Jatekos es kulcs interakcioja");
			// Tile-okhoz tartozo tesztesetek. Ezek az attekinto nezet eseteit
			// vizsgaljak.
			System.out.println("6. Jatekos tile-lal utkozik.");
			System.out.println("7. Tile-ok mozgatasa");
			System.out.println("8. Interakcio tile-lal");
			// A jatekos ugrasanak tesztesete
			System.out.println("9. Ugras");
			// Kilepes
			System.out.println("x - kilepes");

			System.out
					.println("Nyomja meg a kivant tesztesethez tartozo billentyut a teszteleshez, majd nyomjon entert!");

			// Input beolvasasa
			BufferedReader reader;
			reader = new BufferedReader(new InputStreamReader(System.in));
			try {
				sor = reader.readLine();
			} catch (Exception e) {
			}

			try {
				// Ha a parseInt exceptiont dob, az azt jelenti, hogy nem szamot
				// vitt be a user.
				// Vagyis rossz parancsot vitt be, vagy ki akart lepni. Ezeket
				// az eseteket a catch blokkban kezeljuk.
				menu = Integer.parseInt(sor);
				if (menu >= 0 && menu <= 9)
					System.out.println(menu + ". teszteset:");

				// Kivant teszteset meghivasa.
				// Amennyiben a felhasznalo egesz szamot irt be, de nem
				// tesztesetnek megfelelo szamozassal, akkor is kiirjuk, hogy
				// "Rossz parancs!"
				switch (menu) {
				case 0:
					teszt.teszt0();
					break;
				case 1:
					teszt.teszt1();
					break;
				case 2:
					teszt.teszt2();
					break;
				case 3:
					teszt.teszt3();
					break;
				case 4:
					teszt.teszt4();
					break;
				case 5:
					teszt.teszt5();
					break;
				case 6:
					teszt.teszt6();
					break;
				case 7:
					teszt.teszt7();
					break;
				case 8:
					teszt.teszt8();
					break;
				case 9:
					teszt.teszt9();
					break;
				default:
					System.out.println("Rossz parancs!");

				}
			}

			catch (Exception e) {
				// Ha a user 'x'-et vitt be, akkor a vege valtozo bebillen
				// true-ba, es a nem megyunk vissza a while ciklusba.
				try {
					if (sor.charAt(0) == 'x') {
						vege = true;
					} else {
						// Ha a user egy 'x'-tol es egy integertol kulonbozo
						// erteket
						// vitt be, akkor kiirjuk, hogy rossz parancs.
						System.out.println("Rossz parancs!");
					}
				} catch (Exception e1) {
					// Ha a user egy 'x'-tol es egy integertol kulonbozo
					// erteket
					// vitt be, akkor kiirjuk, hogy rossz parancs.
					System.out.println("Rossz parancs!\n");
				}
			}

		}

	}
}
